/******************************************************************************/
/* din_def.h                                                                  */
/******************************************************************************/

#ifndef __DIN_DEF_H
#define __DIN_DEF_H


/********************** Macros & Constants for DIN ****************************/
#define  DIN_ANTIDREBEZG      (1)                  // Antidr value x 100msec

/********************** Prototype struct for DIN ******************************/
typedef enum
{
    eDIN_1 = 0,                                    // Din 1
    eDIN_2,                                        // Din 2
    eDIN_3,                                        // Din 3
    eDIN_4,                                        // Din 4
    eDIN_5,                                        // Din 5
    eDIN_6,                                        // Din 6
    eDIN_END                                       // End token
} __eIND_DIN;                                      // Type DIN index


typedef enum
{
    eDIN_OFF_STABLE = 0,                           // Din off-stable
    eDIN_ON_ANTI,                                  // Din on-anti
    eDIN_ON_TIMER,                                 // Din on-timer
    eDIN_ON_STABLE,                                // Din on-stable
    eDIN_OFF_ANTI,                                 // Din off-anti
    eDIN_OFF_TIMER                                 // Din off-timer
} __eSTATE_DIN;                                    // Type DIN state


#pragma pack(1)
typedef struct
{
    unsigned en_dis  : 1;
    unsigned norm    : 1;
    unsigned dummy   : 6;
} __BIT_FLG_DIN;


typedef struct
{
    __BIT_FLG_DIN dinx;
    uint8_t action;
    uint16_t timerOn;
    uint16_t timerOff;
} __SETT_DIN;                                      // Type DIN sett
#pragma pack()


typedef struct
TOOLS_DIN
{
    TOOLS_DIN() : din(0), state(eDIN_OFF_STABLE) {}

    uint8_t din;
    uint8_t state;
    uint32_t timer;
} __TOOLS_DIN;                                     // Type DIN sett


#endif